package com.icss.utils;

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.*;


/**
 * @author 韦锦良
 *　类的作用：用来只在执行sql语句返回的ResultSet的一行，
 *	用来进行分页的时候使用
 * 最后修改时间：2010-3-28　上午11:34:50
 * 最后的改动内容：
 */
@SuppressWarnings("serial")
public class Record extends HashMap {

	/**
	 * 取得字段的值
	 * @param key 字段名
	 * @return 成功返回字段的取值, 异常或失败返回 null
	 */
	public Object get(String key) {
		if (key == null) {
			return null;
		} else {
			return super.get(key.toUpperCase());
		}
	}

	/**
	 * 得到 String 类型的值
	 * @param key 字段名
	 * @return String 类型的值
	 */
	public java.lang.String getString(String key) {
		Object obj = this.get(key);

		if (obj instanceof Timestamp || obj instanceof java.sql.Date) {

			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
			String date = null;
			try {
				date = sdf.format(obj);
			} catch (Exception e) {
				e.printStackTrace();
			}
			return date;
		}

		return (java.lang.String) obj;
	}

	/**
	 * 得到 Timestamp 类型的值
	 * @param key 字段名
	 * @return Timestamp 类型的值
	 */
	public java.sql.Timestamp getTimestamp(String key) {
		Object obj = this.get(key);
		return (java.sql.Timestamp) obj;
	}

	/**
	 * 得到 Date 类型的值
	 * @param key 字段名
	 * @return Date 类型的值
	 */
	public java.sql.Date getDate(String key) {
		Object obj = this.get(key);
		return (java.sql.Date) obj;

	}

	/**
	 * 得到 Time 类型的值
	 * @param key 字段名
	 * @return Time 类型的值
	 */
	public java.sql.Time getTime(String key) {
		Object obj = this.get(key);
		return (java.sql.Time) obj;
	}

	/**
	 * 得到 BigDecimal 类型的值
	 * @param key 字段名
	 * @return BigDecimal 类型的值
	 */
	public java.math.BigDecimal getBigDecimal(String key) {
		Object obj = this.get(key);
		return (java.math.BigDecimal) obj;
	}

	/**
	 * 得到 Long 类型的值
	 * @param key 字段名
	 * @return Long 类型的值
	 */
	public java.lang.Long getLong(String key) {
		Object obj = this.get(key);
		return (java.lang.Long) obj;
	}

	/**
	 * 得到 Integer 类型的值
	 * @param key 字段名
	 * @return Integer 类型的值
	 */
	public java.lang.Integer getInteger(String key) {
		Object obj = this.get(key);
		return (java.lang.Integer) obj;
	}

	/**
	 * 得到 Short 类型的值
	 * @param key 字段名
	 * @return Short 类型的值
	 */
	public java.lang.Short getShort(String key) {
		Object obj = this.get(key);
		return (java.lang.Short) obj;
	}

	/**
	 * 得到 Double 类型的值
	 * @param key 字段名
	 * @return Double 类型的值
	 */
	public java.lang.Double getDouble(String key) {
		Object obj = this.get(key);
		return (java.lang.Double) obj;
	}

	/**
	 * 得到 Float 类型的值
	 * @param key 字段名
	 * @return Float 类型的值
	 */
	public java.lang.Float getFloat(String key) {
		Object obj = this.get(key);
		return (java.lang.Float) obj;
	}

	/**
	 * 得到 Boolean 类型的值
	 * @param key 字段名
	 * @return Boolean 类型的值
	 */
	public java.lang.Boolean getBoolean(String key) {
		Object obj = this.get(key);
		return (java.lang.Boolean) obj;
	}

	/**
	 * 得到 Byte 类型的值
	 * @param key 字段名
	 * @return Byte 类型的值
	 */
	public java.lang.Byte getByte(String key) {
		Object obj = this.get(key);

		if (obj instanceof Boolean) {
			Boolean result = (Boolean) obj;
			if (result) {
				return 1;
			}
			return 0;
		}

		return (java.lang.Byte) obj;
	}

	/**
	 * 得到 byte[] 类型的值
	 * @param key 字段名
	 * @return byte[] 类型的值
	 */
	public byte[] getBytes(String key) {
		Object obj = this.get(key);
		return (byte[]) obj;
	}

	/**
	 * 得到 Blob 类型的值
	 * @param key 字段名
	 * @return Blob 类型的值
	 */
	public java.sql.Blob getBlob(String key) {
		Object obj = this.get(key);
		return (java.sql.Blob) obj;
	}

	/**
	 * 得到 Clob 类型的值
	 * @param key 字段名
	 * @return Clob 类型的值
	 */
	public java.sql.Clob getClob(String key) {
		Object obj = this.get(key);
		return (java.sql.Clob) obj;
	}

	/**
	 * 得到 Array 类型的值
	 * @param key 字段名
	 * @return Array 类型的值
	 */
	public java.sql.Array getArray(String key) {
		Object obj = this.get(key);
		return (java.sql.Array) obj;
	}

	/**
	 * 得到 InputStream 类型的值
	 * @param key 字段名
	 * @return InputStream 类型的值
	 */
	public java.io.InputStream getBinaryStream(String key) {
		Object obj = this.get(key);
		return (java.io.InputStream) obj;
	}

	/**
	 * 得到 Object 类型的值
	 * @param key 字段名
	 * @return Object 类型的值
	 */
	public Object getObject(String key) {
		return this.get(key);
	}

}
